using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace KLib.Camera
{
    public interface ICamera
    {
        Vector2 Position { get; }
        float Rotation { get; }
        Vector2 ZoomAmount { get; }

        bool AxisAligned { get; set; }
        string Name { get; }
        Vector2 CenterScreen { get; }

        void Move(Vector2 distance);
        void MoveTo(Vector2 position);
        void Rotate(float degrees);
        void RotateTo(float degrees);
        void Zoom(Vector2 amount);
        void Zoom(float amount);
        void ZoomTo(Vector2 amount);
        void ZoomTo(float amount);

        void Follow(Vector2 position, CameraFollowMode mode);
        void StopFollowing();
        Matrix GetCameraMatrix();
    }
}
